import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-01-04
 * Time: 21:26
 */

class Solution {
    // 单调栈, 本题, 从上到下,递增
    public int[] dailyTemperatures(int[] temperatures) {
        int len=temperatures.length;
        int[] ans=new int[len];
        Stack<Integer> stack=new Stack<>();
        for(int i=0;i<len;i++){
            int x=temperatures[i];
            while(!stack.isEmpty()&&x>temperatures[stack.peek()]){
                // 如果栈不为空, 并且当前元素大于栈顶元素, 说明找到了第一个比栈顶元素大的元素
                int index=stack.pop();
                ans[index]=i-index;
            }
            // 如果栈为空, 或者当前元素 <= 栈顶元素, 就入栈
            stack.push(i);
        }
        return ans;
    }
}
